package cn.jly.bigdata.spark.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author lanyangji
 * @date 2019/11/24 10:47
 */
object Spark02_expr19 {

  def main(args: Array[String]): Unit = {

    // local模式

    // 创建 SparkConf 对象
    // 这边也自定义了本地的模式（分配多少个cpu）
    // app id
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")

    // 创建spark上下文对象，SparkContext -> sc
    val sc = new SparkContext(sparkConf)

    val arrayRDD: RDD[(Int, String)] = sc.makeRDD(Array((3, "aa"), (6, "cc"), (2, "bb"), (1, "dd"),(11, "zz")))


    // sortByKey算子
    // 升序
    arrayRDD.sortByKey().collect().foreach(println)

    // 降序
    arrayRDD.sortByKey(false).collect().foreach(println)


    // mapValues算子, 只对v起作用
    // 对分组之后的元素操作，比较有用
    arrayRDD.mapValues(_.concat("---")).collect.foreach(println)

    // join算子
    val arrayRDD2: RDD[(Int, Int)] = sc.makeRDD(Array((3, 1), (6, 2), (2, 3), (1, 4)))

    arrayRDD2.join(arrayRDD).collect().foreach(println)

    // cogroup算子
    arrayRDD2.cogroup(arrayRDD).collect.foreach(println)
  }
}
